The present invention relates to the field of packet-switched communications, and more particularly to processing multicast traffic in a network switch node.
The performance of packet switching devices is often limited by the finite buffering they can provide for the data objects passing through them. In a switch for an Asynchronous Transfer Mode (ATM) network, for example, ATM cells typically must be queued in one or more ingress queues of the switch before being forwarded to their destinations. Cells destined for a congested destination continue to occupy space in the ingress queues until the destinations can accept more cells. Consequently, when one or more destinations become congested, the finite queuing resources of the switch can quickly be exceeded, crippling the throughput of the switch.
One particularly undesirable phenomenon, known as head-of-line blocking, occurs when a cell must wait at the head of an ingress queue for its destination to become uncongested, blocking other cells in the ingress queue from being forwarded to uncongested destinations. One technique for reducing head-of-line blocking is to queue incoming cells in separate ingress queues according to their destinations. By this arrangement, called xe2x80x9cvirtual output queuing,xe2x80x9d head of line blocking is avoided for those cells or other data objects destined for only one destination (i.e., unicast traffic). If a destination becomes congested, only the cells enqueued in the ingress queue directed to that destination are affected and cells in other ingress queues may continue to be forwarded to uncongested destinations.
Unfortunately, virtual output queuing is less effective for multicast traffic (i.e., cells or other data objects destined for two or more destinations). Although a multicast cell may be enqueued in multiple ingress queues, one for each multicast destination, this multiplication of cells consumes precious additional switching resources and may cause cell-ordering problems. Alternatively, a separate ingress queue may be provided for each different combination of possible destinations. As a practical matter, however, such an implementation is usually limited to switches having a relatively small number of destinations, considering that the number of required ingress queues increases exponentially with the number of destinations. Because of these complications, many prior art switches simply tolerate or drop multicast cells that cause head-of-line blocking.
A method and apparatus for reducing congestion in a network switching node are disclosed. Destination port designations that correspond to congested destinations in the switching node are masked from a destination port field included in a first packet in a multicast queue of the switching node if a drop eligibility value within the packet indicates that destination port designations may be masked. The first packet is dequeued from the multicast queue to be forwarded to destination ports indicated by unmasked destination port designations in the destination port field, permitting advance of other packets in the multicast queue.